

function findAbsolutePosition(element) {

    if (typeof element === "string")
        element = document.getElementById(element)

    if (!element)
        return {top: 0, left: 0};

    var y = 0;
    var x = 0;
    while (element.offsetParent) {
        x += element.offsetLeft;
        y += element.offsetTop;
        element = element.offsetParent;
    }
    return {top: y, left: x};
}
function getAbsoluteElementPosition(obj) {
    var curleft = 0, curtop = 0;
    if (obj.offsetParent) {
        do {
//                  if( $(obj).css('position') === 'fixed'){
//                      
//                      curleft += $(obj).position().left;
//                      curtop += $(obj).position().top;
//                      break;
//                  }
            curleft += obj.offsetLeft;
            curtop += obj.offsetTop;
        } while (obj = obj.offsetParent);
    }
    return {top: curtop, left: curleft};
}
function getElementList(mCoord, list) {

    var aux = list.length, listXi = 0, listXf = 0, listYi = 0, listYf = 0;

    for (var i = 0; i < aux; i++) {

        listXi = list[i].Xi;
        listXf = list[i].Xf;
        listYi = list[i].Yi;
        listYf = list[i].Yf;

        if ($('.' + list[i].class).hasClass('globisFixed')) {

            listXi += scrollLeft;

            listXf = listXi + $('.' + list[i].class).width();

            listYi += scrollTop;

            listYf = listYi + $('.' + list[i].class).height();
        }

        if ((mCoord.x >= listXi && mCoord.y >= listYi) && (mCoord.x <= listXf && mCoord.y <= listYf)) {

            if (elementAux && elementAux.class !== list[i].class) {

                //console.log( elementAux.Xi +' <= '+ listXi +' && '+ elementAux.Yi +' <= '+ listYi  +' && '+ elementAux.Xf +' >= '+ listXf +' && '+ elementAux.Yf +' >= '+ listYf);

                //if( ( elementAux.Xi <= listXi && elementAux.Yi <= listYi ) && ( elementAux.Xf >= listXf && elementAux.Yf >= listYf)){

                $('.' + elementAux.class).css('border', '');
            }
            elementAux = list[i];

            break;
        }
    }
    if (elementAux) {

        $('.' + elementAux.class).css('border', '2px solid rgb(0, 0, 0)');
    }
}
function elementPos(element) {

    var leftReal = 0, topReal = 0, insertElement = false;

    var pos = getAbsoluteElementPosition(element);

    if ($(element).children().toArray().length) {

        var firstChid = $(element).children().get(0);

        var posChild = findAbsolutePosition(firstChid);

        //if ((parseFloat(posChild.top) !== parseFloat(pos.top)) || (parseFloat(posChild.left) !== parseFloat(pos.left))) {

        insertElement = true;
        //}
    }
    else if (!$(element).children().toArray().length) {

        insertElement = true;
    }
    if (insertElement) {

        if (clases = $(element).attr('class')) {

            clases = String(clases);

            if (globisClass = clases.match(/globisChange.+/)) {

                globisClass = String(globisClass);

                $(element).removeClass(globisClass);
            }
        }

        $(element).addClass('globisChange' + cont);

        var spaceAroundValues = spaceAround(element);

        if ($(element).css('position') === 'fixed' && ($(element).position().left || $(element).position().top)) {

            leftReal = parseFloat($(element).position().left) + parseFloat(spaceAroundValues.leftAround);

            topReal = parseFloat($(element).position().top) + parseFloat(spaceAroundValues.topAround);

        }
        else {

            leftReal = parseFloat(pos.left) + parseFloat(spaceAroundValues.leftAround);

            topReal = parseFloat(pos.top) + parseFloat(spaceAroundValues.topAround);
        }
        var object = {
            class: 'globisChange' + cont++,
            Xi: leftReal,
            Yi: topReal,
            Xf: leftReal + parseFloat($(element).width()),
            Yf: topReal + parseFloat($(element).height())
        };
        return object;
    }
    return false;
}
function insertElement(elementToInsert, elementToReplace) {

    $(elementToInsert).removeAttr('id');

    $(elementToReplace).each(function() {

        $.each(this.attributes, function() {

            if (this.name !== 'href' && this.name !== 'src')
                $(elementToInsert).attr(this.name, this.value);

        });
    });

    $(elementToInsert).css('width', $(elementToReplace).width());

    $(elementToInsert).css('height', $(elementToReplace).height());

    $(elementToInsert).css('border', '');

    $(elementToInsert).insertAfter(elementToReplace);

    $(elementToReplace).remove();
    //$(elementToReplace).replaceWith(elementToInsert);

}
function spaceAround(element) {

    var spaceAroundLeft = 0, spaceAroundTop = 0;

    spaceAroundLeft = ($(element).css('margin-left')) ? parseFloat($(element).css('margin-left')) : 0;

    spaceAroundLeft += ($(element).css('border-left')) ? parseFloat($(element).css('border-left')) : 0;

    spaceAroundLeft += ($(element).css('padding-left')) ? parseFloat($(element).css('padding-left')) : 0;

    spaceAroundTop = ($(element).css('margin-top')) ? parseFloat($(element).css('margin-top')) : 0;

    spaceAroundTop += ($(element).css('border-top')) ? parseFloat($(element).css('border-top')) : 0;

    spaceAroundTop += ($(element).css('padding-top')) ? parseFloat($(element).css('padding-top')) : 0;

    return {leftAround: spaceAroundLeft, topAround: spaceAroundTop};
}
//
//
//function ordenarList(list) {
//
//    var aux = null;
//
//    var newList = Array();
//
//    var i = 0, change = false;
//
//    while (list.length !== 0) {
//
//        aux = list[0];
//
//        for (var j = 0; j < list.length; j++) {
//
//            if (aux.number > list[j].number) {
//                aux = list[j];
//                control = j;
//                change = true;
//            }
//        }
//        if (i > 0 && newList[i - 1].number === aux.number) {
//
//            newList[i - 1] = aux;
//        }
//        else
//            newList[i++] = aux;
//
//        if (change) {
//            list = deletedPos(list, control);
//            change = false;
//        }
//        else
//            list = deletedPos(list, 0);
//
//    }
//
//    for (var index = 0, index2 = newList.length; i < list.length; index++) {
//
//        newList[ index2++ ] = list[index];
//    }
//    return newList;
//
//}
//function setChilds(element) {
//
//    var obj = elementPos(element, contList);
//
//    if ($(element).contents().toArray().length) {
//
//        $(element).contents().find('*').each(function(i) {
//
//            if ($(this).children().toArray().length)
//                setChilds(this);
//
//        });
//    }
//    if (obj) {
//
//        listElement[contList++] = obj;
//    }
//
//
//}
//function hasClass() {
//    console.log('start drag');
//    var contList = listElement.length;
//
//    parse();
//
//    for (var i = 0; i < contList; i++) {
//        //console.log(listElement[i]);
//        if (!$('#pageLoad').find('*').hasClass(listElement[i].class))
//            listElement.splice(i, 1);
//    }
//
//}
//function deletedPos(vector, index) {
//
//    var newVector = Array();
//
//    for (var i = 0, j = 0; i < vector.length; i++) {
//        if (i !== index)
//            newVector[j++] = vector[i];
//    }
//
//    return newVector;
//
//}
